home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / gnu / emacs.lha / emacs-19.16 / etc / BABYL < prev    next >
Text File  |  1993-06-08  |  5KB  |  177 lines

  1. Format of Version 5 Babyl Files:
  2.  
  3. Warning:
  4.  
  5.     This was written Tuesday, 12 April 1983 (by Eugene Ciccarelli),
  6. based on looking at a particular Babyl file and recalling various
  7. issues.  Therefore it is not guaranteed to be complete, but it is a
  8. start, and I will try to point the reader to various Babyl functions
  9. that will serve to clarify certain format questions.
  10.  
  11.     Also note that this file will not contain control-characters,
  12. but instead have two-character sequences starting with Uparrow.
  13. Unless otherwise stated, an Uparrow <character> is to be read as
  14. Control-<character>, e.g. ^L is a Control-L.
  15.  
  16. Versions:
  17.  
  18.     First, note that each Babyl file contains in its BABYL OPTIONS
  19. section the version for the Babyl file format.  In principle, the
  20. format can be changed in any way as long as we increment the format
  21. version number; then programs can support both old and new formats.
  22.  
  23.     In practice, version 5 is the only format version used, and the
  24. previous versions have been obsolete for so long that Emacs does not
  25. support them.
  26.  
  27.  
  28. Overall Babyl File Structure:
  29.  
  30.     A Babyl file consists of a BABYL OPTIONS section followed by
  31. 0 or more message sections.  The BABYL OPTIONS section starts
  32. with the line "BABYL OPTIONS:".  Message sections start with
  33. Control-Underscore Control-L Newline.  Each section ends
  34. with a Control-Underscore.  (That is also the first character
  35. of the starter for the next section, if any.)  Thus, a three
  36. message Babyl file looks like:
  37.  
  38. BABYL OPTIONS:
  39. ...the stuff within the Babyl Options section...
  40. ^_^L
  41. ...the stuff within the 1st message section...
  42. ^_^L
  43. ...the stuff within the 2nd message section...
  44. ^_^L
  45. ...the stuff within the last message section...
  46. ^_
  47.  
  48.     Babyl is tolerant about some whitespace at the end of the
  49. file -- the file may end with the final ^_ or it may have some
  50. whitespace, e.g. a newline, after it.
  51.  
  52.  
  53. The BABYL OPTIONS Section:
  54.  
  55.     Each Babyl option is specified on one line (thus restricting
  56. string values these options can currently have).  Values are
  57. either numbers or strings.  The format is name, colon, and the
  58. value, with whitespace after the colon ignored, e.g.:
  59.  
  60. Mail: ~/special-inbox
  61.  
  62.     Unrecognized options are ignored.
  63.  
  64.     Here are those options and the kind of values currently expected:
  65.  
  66.     MAIL        Filename, the input mail file for this
  67.             Babyl file.  You may also use several file names
  68.             separated by commas.
  69.     Version        Number.  This should always be 5.
  70.     Labels        String, list of labels, separated by commas.
  71.  
  72.  
  73. Message Sections:
  74.  
  75.     A message section contains one message and information
  76. associated with it.  The first line is the "status line", which
  77. contains a bit (0 or 1 character) saying whether the message has
  78. been reformed yet, and a list of the labels attached to this
  79. message.  Certain labels, called basic labels, are built into
  80. Babyl in a fundamental way, and are separated in the status line
  81. for convenience of operation.  For example, consider the status
  82. line:
  83.  
  84. 1, answered,, zval, bug,
  85.  
  86.     The 1 means this message has been reformed.  This message is
  87. labeled "answered", "zval", and "bug".  The first, "answered", is
  88. a basic label, and the other two are user labels.  The basic
  89. labels come before the double-comma in the line.  Each label is
  90. preceded by ", " and followed by ",".  (The last basic label is
  91. in fact followed by ",,".)  If this message had no labels at all,
  92. it would look like:
  93.  
  94. 1,,
  95.  
  96.     Or, if it had two basic labels, "answered" and "deleted", it
  97. would look like:
  98.  
  99. 1, answered, deleted,, zval, bug,
  100.  
  101.     The & Label Babyl Message knows which are the basic labels.
  102. Currently they are:  deleted, unseen, recent, and answered.
  103.  
  104.     After the status line comes the original header if any.
  105. Following that is the EOOH line, which contains exactly the
  106. characters "*** EOOH ***" (which stands for "end of original
  107. header").  Note that the original header, if a network format
  108. header, includes the trailing newline.  And finally, following the
  109. EOOH line is the visible message, header and text.  For example,
  110. here is a complete message section, starting with the message
  111. starter, and ending with the terminator:
  112.  
  113. ^_^L
  114. 1,, wordab, eccmacs,
  115. Date: 11 May 1982 21:40-EDT
  116. From: Eugene C. Ciccarelli <ECC at MIT-AI>
  117. Subject: notes
  118. To: ECC at MIT-AI
  119.  
  120. *** EOOH ***
  121. Date: Tuesday, 11 May 1982  21:40-EDT
  122. From: Eugene C. Ciccarelli <ECC>
  123. To:   ECC
  124. Re:   notes
  125.  
  126. Remember to pickup check at cashier's office, and deposit it
  127. soon.  Pay rent.
  128. ^_
  129.  
  130. ;;; Babyl File BNF:
  131.  
  132. ;;; Overall Babyl file structure:
  133.  
  134.  
  135. Babyl-File    ::= Babyl-Options-Section  (Message-Section)*
  136.  
  137.  
  138. ;;; Babyl Options section:
  139.  
  140.  
  141. Babyl-Options-Section
  142.         ::= "BABYL OPTIONS:" newline (Babyl-Option)* Terminator
  143.  
  144. Babyl-Option    ::= Option-Name ":" Horiz-Whitespace BOptValue newline
  145.  
  146. BOptValue    ::= Number | 1-Line-String
  147.  
  148.  
  149.  
  150. ;;; Message section:
  151.  
  152.  
  153. Message-Section    ::= Message-Starter  Status-Line  Orig-Header
  154.             EOOH-Line  Message  Terminator
  155.  
  156. Message-Starter    ::= "^L" newline
  157.  
  158. Status-Line    ::= Bit-Char  ","  (Basic-Label)* "," (User-Label)* newline
  159.  
  160. Basic-Label    ::= Space  BLabel-Name  ","
  161.  
  162. User-Label    ::= Space  ULabel-Name  ","
  163.  
  164. EOOH-Line    ::= "*** EOOH ***" newline
  165.  
  166. Message        ::= Visible-Header  Message-Text
  167.  
  168.  
  169. ;;; Utilities:
  170.  
  171. Terminator    ::= "^_"
  172.  
  173. Horiz-Whitespace
  174.         ::= (Space | Tab)*
  175.  
  176. Bit-Char    ::= "0" | "1"
  177.